% Autore: Lorenzo Visentin
% Argomenti: schema ER, Dizionario dei dati, vincoli esterni.


\chapter{Progettazione concettuale}
\label{chPrgConcettuale}

\section{Schema Entità-Associazione}
\label{parDiagrER}

In questa prima fase di progettazione abbiamo realizzato uno schema ER di massima, che è stato poi sottoposto a ristrutturazione con l'obiettivo principale di eliminare i costrutti non traducibili nel modello relazionale. La Figura \ref{figERDef} riporta una panoramica generale del primo schema prodotto.
Qualche cenno sull'operazione di ristrutturazione verrà presentato nel capitolo dedicato alla progettazione logica.\\

Si possono individuare quattro macro aree in cui è possibile suddividere lo schema: gestione delle sale, gestione degli interventi tecnici, prenotazioni ed eventi, e infine biglietti ed utenti, che saranno descritti più ampiamente nei prossimi paragrafi.

\begin{landscape}
\begin{figure}[p]
\begin{center}
\includegraphics[height=\textwidth, clip=true, trim=1.5cm 0 0 0]{img/ERDefinitivo.pdf}
  \caption{\emph{Schema ER completo iniziale.}}
  \label{figERDef}
\end{center}
\end{figure}
\end{landscape}




\subsection{Gestione delle sale}
\label{subparGestioneSale}

Questa parte dello schema ER coinvolge le entità \texttt{Città}, \texttt{Sede}, \texttt{Sala} e \texttt{Poltrona}; è piuttosto intuitiva e si spiega da sé semplicemente osservando la Figura \ref{figERDefRistrSale}. La catena di associazioni pone in questo caso le entità in una sorta di relazione "contenitore/contenuto".

\begin{figure}[h]
\begin{center}
\includegraphics[width=0.8\textwidth]{img/ERDefinitivoSala.eps}
  \caption{\emph{Schema ER ristrutturato - Gestione delle sale.}}
  \label{figERDefRistrSale}
\end{center}
\end{figure}


\subsection{Gestione degli interventi tecnici}
\label{subparGestioneInterventi}

Anche questa parte (visibile in Figura \ref{figERDefRistrTecnici}) è auto esplicativa; le entità in questione sono \texttt{Tecnico}, \texttt{Intervento Manutenzione} e \texttt{Proiettore}; in particolare, ogni intervento eseguito da un tecnico è un'istanza dell'entità Intervento Manutenzione. 

\begin{figure}[hb]
\begin{center}
\includegraphics[width=0.8\textwidth]{img/ERDefinitivoProiettore.eps}
  \caption{\emph{Schema ER ristrutturato - Gestione degli interventi tecnici.}}
  \label{figERDefRistrTecnici}
\end{center}
\end{figure}


\subsection{Prenotazioni ed eventi}
\label{subparPrenotazEventi}

Si tratta della parte più complessa, in quanto coinvolge entità con un significato di non immediata comprensione, ossia \texttt{Spettacolo}, \texttt{Palinsesto}, \texttt{Evento}, \texttt{Film}, \texttt{Noleggio} e \texttt{Fornitore}.

Si può osservare prima di tutto la distinzione che è stata fatta tra Spettacolo e Palinsesto: infatti, le istanze di Palinsesto sono gli istanti temporali (data e ora) in cui iniziano gli eventi che si svolgono nella catena di cinema, mentre le istanze di Spettacolo sono per l'appunto gli spettacoli che hanno luogo nelle sale (\emph{collocazione spaziale}).%; l'istanza di Palinsesto ad ognuno di essi collegata fornisce la \emph{collocazione temporale} dello spettacolo stesso.
%Il motivo per cui le informazioni di Spettacolo non sono state accorpate in Palinsesto è che in questo modo si è reso possibile avere più spettacoli uguali alla stessa ora in sale diverse.
La scelta di modellare l'orario degli spettacoli con una entità autonoma, invece di averlo come loro attributo, consente di separare quindi le informazioni riguardanti il tempo da quelle del luogo, e permette l'esistenza di più spettacoli per lo stesso evento, aventi tutti la medesima ora di inizio, ma siti in luoghi diversi.

L'entità Spettacolo è poi collegata alle entità Sala e Proiettore per mezzo dell'associazione ternaria Proiettato; l'attributo Durata di quest'associazione consente di registrare il tempo d'utilizzo effettivo di un proiettore.
L'entità Palinsesto possiede anche l'attributo In3D che permette di stabilire se l'evento rappresentato è per l'appunto una proiezione tridimensionale, in alternativa alle tradizionali bidimensionali, per la diversa tipologia di proiettori ad essi assocaibili.

La distinzione tra Evento e Film riflette quanto emerso dall'analisi dei requisiti, in cui si afferma che non tutti gli eventi rappresentati nelle sale sono dei film, ma che le associazioni con Noleggio ed Abbonamento valgono solo per questi ultimi.

Infine, l'entità Noleggio è stata introdotta per consentire di noleggiare più volte lo stesso film, cosa che non sarebbe possibile per le regole semantiche del modello ER se venisse contratta in una associazione diretta tra Film e Fornitore.% Un Film viene inserito a seguito di un contratto con il distributore.

Quanto descritto è visibile in Figura \ref{figERDefRistrPrenotazioni}.

\begin{figure}[hb]
\begin{center}
\includegraphics[width=0.8\textwidth]{img/ERDefinitivoEvento.eps}
  \caption{\emph{Schema ER ristrutturato - Prenotazioni ed eventi.}}
  \label{figERDefRistrPrenotazioni}
\end{center}
\end{figure}


\subsection{Biglietti ed utenti}
\label{subparBigliettiUtenti}

In questo quadrante le entità interessate sono \texttt{Utente}, \texttt{Biglietto}, \texttt{Biglietto Online},\linebreak \texttt{Tariffa}, \texttt{Abbonamento}, \texttt{Listino} e \texttt{Messaggio}.

%Per capire se un biglietto è stato acquistato o solo prenotato, invece di ricorrere a due associazioni distinte, è stato introdotto l'attributo Pagato nell'associazione Prenota.
Ad ogni Biglietto è associata una Tariffa, che ne permette di definire il prezzo di listino; il prezzo viene tuttavia conservato anche come attributo del biglietto per mantenere la consistenza con il venduto qualora il listino tariffario venisse modificato. Analogo discorso vale per gli Abbonamenti, a ciascuno dei quali è associata un'istanza di Listino. L'entità Biglietto si specializza in Biglietto On Line qualora questo venga acquistato o prenotato da un utente registrato direttamente dal sito; l'attributo Pagato nell'associazione assolve l'intuibile distinzione tra una semplice prenotazione non vincolante ad un biglietto valido a tutti gli effetti.

L'associazione ternaria Consuma, che correla Abbonamento, Biglietto e Film, memorizza ogni acquisto effettuato consumando una disponibilità di un abbonamento; da notare che l'associazione è stata collegata a Film e non ad Evento in quanto, come descritto nell'analisi dei requisiti, per un generico evento che non sia un film non può essere sfruttato un abbonamento per l'ingresso.
Da ultima, l'entità Messaggio contiene i commenti degli utenti relativi ad un determinato evento.

La Figura \ref{figERDefRistrBiglietti} illustra quanto esposto.

\begin{figure}[hb]
\begin{center}
\includegraphics[width=\textwidth]{img/ERDefinitivoUtente.eps}
  \caption{\emph{Schema ER ristrutturato - Biglietti ed utenti.}}
  \label{figERDefRistrBiglietti}
\end{center}
\end{figure}

\pagebreak

\section{Dizionario dei dati}
\label{parDizioDati}

\subsection{Entità}
\label{subparDizioDatiEntita}

Nel seguente elenco sono stati riportati in modo dettagliato le entità e i relativi attributi comprensivi di descrizione, dominio ed identificatori.
Gli attributi seguiti da un asterisco non sono obbligatori.

\begin{itemize}
\item \textbf{Città}
\begin{itemize}
\item \textbf{Descrizione:} Comune italiano in cui è presente un cinema multisala della catena.
\item \textbf{Identificatore scelto:} Codice Comune.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Codice Comune, Stringa:} Codice identificativo univoco assegnato ai comuni italiani dall'ISTAT;
\item \emph{Nome, Stringa:} Nome della città;
\item \emph{Provincia, Stringa:} Provincia in cui è situata la città.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Sede}
\begin{itemize}
\item \textbf{Descrizione:} Singolo cinema multisala all'interno della catena (per es. The Space di Limena oppure IMAX di Milano).
\item \textbf{Identificatore scelto:} Codice Sede.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Codice Sede, Intero:} Codice identificativo univoco assegnato a ogni sede della catena;
\item \emph{Nome, Stringa:} Denominazione del complesso multisala;
\item \emph{Via, Stringa:} Via stradale della sede;
\item \emph{Latitudine, Virgola Mobile:} Coordinata geografica per Google Maps;
\item \emph{Longitudine, Virgola Mobile:} Coordinata geografica per Google Maps;
\item \emph{Telefono *, Testo:} Contatto telefonico per comunicazioni utente-sede;
\item \emph{Email *, Stringa:} Contatto email per comunicazioni utente-sede.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Sala}
\begin{itemize}
\item \textbf{Descrizione:} Sala del cinema aperta al pubblico per vedere spettacoli.
\item \textbf{Identificatore scelto:} Sigla, Codice Sede (in Sede).
\item \textbf{Attributi:}
\begin{itemize}
%\item \emph{IDSala, SERIAL:} Numero progressivo identificativo della sala; NO NELL'ER!!
\item \emph{Sigla, Stringa:} Identificatore (sigla) della sala all'interno di una sede;
\item \emph{Nome, Stringa:} Nome esteso attribuito ad una sala;
\item \emph{Totale Posti, Intero:} Numero poltrone presenti nella sala.
\end{itemize}
\end{itemize}
\end{itemize}

\pagebreak

\begin{itemize}
\item \textbf{Poltrona}
\begin{itemize}
\item \textbf{Descrizione:} Posto a sedere occupabile in una sala.
\item \textbf{Identificatore scelto:} Fila, Numero, Sigla (in Sala), Codice Sede (in Sede).
\item \textbf{Attributi:}
\begin{itemize}
%\item \emph{IDPoltrona, SERIAL:} Numero progressivo identificativo della poltrona;
\item \emph{Fila, Carattere:} Indice della fila della poltrona;
\item \emph{Numero, Intero:} Posizione della poltrona nella fila;
\item \emph{Prenotabile, Booleano:} Vero se la poltrona non è riservata a disabili e/o solo per biglietti emessi al momento.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Tecnico}
\begin{itemize}
\item \textbf{Descrizione:} Addetto alla manutenzione dei proiettori.
\item \textbf{Identificatore scelto:} Cod. Fiscale.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Cod. Fiscale, Stringa:} Codice fiscale del tecnico;
\item \emph{Cognome, Stringa:} Cognome del tecnico;
\item \emph{Nome, Stringa:} Nome del tecnico.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Proiettore}
\begin{itemize}
\item \textbf{Descrizione:} Dispositivo usato per proiettare un evento.
\item \textbf{Identificatore scelto:} Seriale.
\item \textbf{Attributi:}
\begin{itemize}
%\item \emph{IDPrj, SERIAL:} Numero progressivo identificativo del proiettore;
\item \emph{Seriale, Intero:} Codice seriale del proiettore;
\item \emph{Marca, Stringa:} Marca del proiettore;
\item \emph{Modello, Stringa:} Modello del proiettore;
\item \emph{Intervallo Manutenzione, Intero:} Tempo (in minuti) tra due interventi di manutenzione;
\item \emph{Data Lampadina, DataOra:} Data e ora dell'ultima sostituzione della lampadina;
\item \emph{In3D, Booleano:} Ha capacità di proiezione tridimensionale.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Intervento Manutenzione}
\begin{itemize}
\item \textbf{Descrizione:} Intervento di manutenzione eseguito sui proiettori.
\item \textbf{Identificatore scelto:} Numero Pratica.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Numero Pratica, Intero:} Numero (progressivo) della pratica di manutenzione;
\item \emph{Data Apertura, Data:} Data di inizio pratica di manutenzione;
\item \emph{Data Chiusura *, Data:} Data di chiusura pratica di manutenzione;
\item \emph{Descrizione, Stringa:} Descrizione dell'intervento eseguito sul proiettore.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Spettacolo}
\begin{itemize}
\item \textbf{Descrizione:} Indica se un evento in Palinsesto è prenotabile e da che data.
\item \textbf{Identificatore scelto:} Codice.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Codice, Intero:} Codice dello spettacolo;
\item \emph{Data Prenotabile, DataOra:} Data da cui l'evento in palinsesto è prenotabile;
\item \emph{Valido, Booleano:} Indica se lo spettacolo è valido.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Palinsesto}
\begin{itemize}
\item \textbf{Descrizione:} Istanti temporali in cui gli eventi avranno luogo.
\item \textbf{Identificatore scelto:} Codice.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Codice, Intero:} Codice del palinsesto;
\item \emph{Data Ora, DataOra:} Data e ora dello spettacolo;
\item \emph{In3D, Booleano:} Per distinguere gli spettacoli tridimensionali da quelli tradizionali.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Evento}
\begin{itemize}
\item \textbf{Descrizione:} Opera unica di cui la sede di un cinema vuole trasmettere uno spettacolo (per es. film, concerto, partita di calcio, ecc.). Registra le caratteristiche di un evento generico, che può ripetersi più volte.
\item \textbf{Identificatore scelto:} Codice.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Codice, Intero:} Numero progressivo univoco associato ad un evento;
\item \emph{Locandina *, Immagine:} Immagine descrittiva dell'evento;
\item \emph{Titolo, Stringa:} Titolo dell'evento (per es. Django, concerto GreenDay, Italia-Spagna, ecc.);
\item \emph{Descrizione, Stringa:} Descrizione dell'evento che sarà proiettato;
\item \emph{Durata In Sala, Intero:} Durata effettiva in minuti dell'evento;
\item \emph{Durata Proiezione, Intero:} Tempo di uso totale dei proiettori per l'eventom senza considerare eventuali interruzioni e intervalli.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Film}
\begin{itemize}
\item \textbf{Descrizione:} (Specializzazione di Evento) Evento riferito solo ad opere cinematografiche.
\item \textbf{Identificatore scelto:} Codice (in Evento).
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Trama, Stringa:} La trama/sinossi del film;
\item \emph{Genere, Stringa:} Il genere del film;
\item \emph{Regia, Stringa:} Chi ha diretto il film;
\item \emph{Cast Principale, Stringa:} Lista degli attori principali;
\item \emph{URL Trailer *, Stringa:} Link embed al trailer su un hosting video esterno (p.e. Youtube o Vimeo);
\item \emph{Data Uscita, Data:} L'uscita del film nelle sale.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Noleggio}
\begin{itemize}
\item \textbf{Descrizione:} Contratto tra cinema e casa cinematografica per l'affitto di un film da proiettare.
\item \textbf{Identificatore scelto:} Codice (in Film), Data Inizio.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Data Inizio, Data:} Data di inizio del prestito;
\item \emph{Data Fine, Data:} Data di scadenza del prestito;
\item \emph{Prezzo, Valuta:} Prezzo stabilito dal distributore per il noleggio del film al cinema;
\item \emph{In2D, Booleano:} Campo decisionale per indicare se il noleggio fornisce la versione bidimensionale del film;
\item \emph{In3D, Booleano:} Campo decisionale per indicare se il noleggio fornisce la versione tridimensionale del film.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Fornitore}
\begin{itemize}
\item \textbf{Descrizione:} Casa cinematografica o distributore che fornisce i film al cinema (per es. Universal Pictures, 20th Century Fox, ecc.).
\item \textbf{Identificatore scelto:} P. IVA.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{P. IVA, Stringa:} Partita IVA del distributore;
\item \emph{Nome, Stringa:} Nome del distributore;
\item \emph{Telefono *, Testo:} Numero di telefono per contattare il distributore;
\item \emph{Email *, Testo:} Email per contattare il distributore;
\item \emph{URL *, Testo:} URL del sito del fornitore.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Utente}
\begin{itemize}
\item \textbf{Descrizione:} Persona fisica iscritta al sito della catena di multisala.
\item \textbf{Identificatore scelto:} Email.
\item \textbf{Attributi:}
\begin{itemize}
%\item \emph{IDUtente, SERIAL:} Codice identificativo dell'utente;
\item \emph{Email, Stringa:} Email inserita dall'utente durante la registrazione al sito;
\item \emph{Password, Stringa:} Password (criptata) di accesso al proprio account;
\item \emph{Cognome, Stringa:} Cognome dell'utente;
\item \emph{Nome, Stringa:} Nome dell'utente;
\item \emph{Cod. Fiscale, Stringa:} Codice fiscale dell'utente;
\item \emph{Carta Credito *, Stringa:} Codice carta di credito scelta dall'utente per effettuare acquisti online;
\item \emph{Ultimo Accesso *, DataOra:} Ultimo accesso al proprio account;
\item \emph{Attivo, Booleano:} Campo decisionale per indicare se l'account è valido;
\item \emph{Newsletter, Booleano:} Campo decisionale per indicare la volontà o meno dell'utente di ricevere le nostre newsletters nella propria mail;
\item \emph{Amministrativo, Booleano:} Campo decisionale per concedere i permessi d'accesso all'area amministrativa;
\item \emph{Verificato, Booleano:} Campo decisionale, affermativo dopo che l'utente si è recato alla cassa per far validare un documento e la carta di credito.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Biglietto}
\begin{itemize}
\item \textbf{Descrizione:} (Entità debole) Documento valido per vedere un singolo spettacolo.
\item \textbf{Identificatore scelto:} Num. Biglietto.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Num. Biglietto, Intero:} Numero progressivo assegnato a ogni biglietto;
\item \emph{Data Ora Emissione, DataOra:} Data e ora di creazione del biglietto con conseguente riserva del posto associato;
\item \emph{Prezzo, Valuta:} Prezzo del biglietto calcolato in base alle caratteristiche dell'utente;
\item \emph{Valido, Booleano:} Un biglietto prenotato non è più valido se l'utente non si presenta entro 30 minuti prima dell'inizio del film, o ne richiede la cancellazione.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Biglietto OnLine}
\begin{itemize}
\item \textbf{Descrizione:} (Specializzazione di Biglietto) Biglietto creato attraverso i servizi online.
\item \textbf{Identificatore scelto:} Num. Biglietto (in Biglietto).
\item \textbf{Attributi:}
\begin{itemize}
\item Quelli ereditati da Biglietto.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Tariffa}
\begin{itemize}
\item \textbf{Descrizione:} Listino prezzi applicato ai biglietti.
\item \textbf{Identificatore scelto:} Fascia.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Fascia, Stringa:} Fascia a cui appartiene il biglietto acquistato;
\item \emph{Prezzo Listino, Valuta:} Prezzo applicabile a un evento nella fascia;
\item \emph{In3D, Booleano:} Campo decisionale per indicare se la tariffa abilita alla visione degli spettacoli tridimensionali.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Abbonamento}
\begin{itemize}
\item \textbf{Descrizione:} L'abbonamento acquistato da un utente.
\item \textbf{Identificatore scelto:} Numero.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Numero, Intero:} Numero progressivo identificativo dell'abbonamento;
\item \emph{Totale Ingressi, Intero:} Numero di ingressi totali consentiti dall'abbonamento;
\item \emph{Prezzo, Valuta:} Prezzo dell'abbonamento.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Listino}
\begin{itemize}
\item \textbf{Descrizione:} Listino prezzi applicato agli abbonamenti.
\item \textbf{Identificatore scelto:} Tipo.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Tipo, Stringa:} Tipo di abbonamento;
\item \emph{Totale Ingressi, Intero:} Numero di ingressi coperto dall'abbonamento;
\item \emph{Prezzo Listino, Valuta:} Costo per l'acquisto dell'abbonamento.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Messaggio}
\begin{itemize}
\item \textbf{Descrizione:} Commento inserito da un utente registrato, nella sezione apposita del sito web.
\item \textbf{Identificatore scelto:} Email (in Utente), Data Ora.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Data Ora, DataOra:} Data e ora di inserimento del commento;
\item \emph{Testo, Stringa:} Contenuto del commento inserito.
\end{itemize}
\end{itemize}
\end{itemize}


\subsection{Associazioni}
\label{subparDizioDatiAssociaz}

Si riportano ora le associazioni, i relativi attributi e le entità a cui sono collegate.

\begin{itemize}
\item \textbf{Collocata}
\begin{itemize}
\item \textbf{Descrizione:} Indica in quale città è collocata una sede.
\item \textbf{Entità coinvolte:} Sede, Città.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Situata}
\begin{itemize}
\item \textbf{Descrizione:} Indica in quale sede è situata una sala.
\item \textbf{Entità coinvolte:} Sala, Sede.
\end{itemize}
\end{itemize}

\pagebreak

\begin{itemize}
\item \textbf{Contiene}
\begin{itemize}
\item \textbf{Descrizione:} Indica in quale sala è situata una poltrona.
\item \textbf{Entità coinvolte:} Poltrona, Sala.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Lavora}
\begin{itemize}
\item \textbf{Descrizione:} Indica la sede presso la quale lavora un tecnico.
\item \textbf{Entità coinvolte:} Tecnico, Sede.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Installato}
\begin{itemize}
\item \textbf{Descrizione:} Indica la sala in cui è attualmente posizionato un proiettore.
\item \textbf{Entità coinvolte:} Proiettore, Sala.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Esegue}
\begin{itemize}
\item \textbf{Descrizione:} Indica un intervento di manutenzione eseguito da un tecnico.
\item \textbf{Entità coinvolte:} Tecnico, Intervento Manutenzione.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Riguarda}
\begin{itemize}
\item \textbf{Descrizione:} Indica su quale proiettore è stato effettuato un intervento di manutenzione.
\item \textbf{Entità coinvolte:} Intervento Manutenzione, Proiettore.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Proiettato}
\begin{itemize}
\item \textbf{Descrizione:} Indica la proiezione di uno spettacolo in una sala tramite un proiettore.
\item \textbf{Entità coinvolte:} Spettacolo, Sala, Proiettore.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Durata, Intero:} Minuti di utilizzo del proiettore. Permette di registrare l'uso effettivo di un proiettore.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Associa}
\begin{itemize}
\item \textbf{Descrizione:} Indica quali sono gli spettacoli associati ad un palinsesto.
\item \textbf{Entità coinvolte:} Spettacolo, Palinsesto.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Programma}
\begin{itemize}
\item \textbf{Descrizione:} Indica gli eventi rappresentati in un palinsesto.
\item \textbf{Entità coinvolte:} Palinsesto, Evento.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Fornisce}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'affitto di un film da parte del cinema.
\item \textbf{Entità coinvolte:} Film, Noleggio.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Contratta}
\begin{itemize}
\item \textbf{Descrizione:} Indica la stipulazione di un contratto d'affitto tra il cinema e il distributore.
\item \textbf{Entità coinvolte:} Fornitore, Noleggio.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Consuma}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'utilizzo dell'abbonamento da parte di un cliente per l'acquisto di un biglietto relativo a un film.
\item \textbf{Entità coinvolte:} Film, Abbonamento, Biglietto.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Entrata}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'ingresso alla visione di uno spettacolo con un biglietto.
\item \textbf{Entità coinvolte:} Biglietto, Spettacolo.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Riserva}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'occupazione esclusiva di un posto con un biglietto.
\item \textbf{Entità coinvolte:} Biglietto, Poltrona.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Applica}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'appartenenza del biglietto a una determinata fascia di prezzi.
\item \textbf{Entità coinvolte:} Biglietto, Tariffa.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Definisce}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'appartenenza dell'abbonamento ad una tipologia nel listino.
\item \textbf{Entità coinvolte:} Abbonamento, Listino.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Prenota}
\begin{itemize}
\item \textbf{Descrizione:} Indica la prenotazione o l'acquisto di un biglietto da parte di un cliente attraverso il servizio online.
\item \textbf{Entità coinvolte:} Abbonamento, Listino.
\item \textbf{Attributi:}
\begin{itemize}
\item \emph{Pagato, Booleano:} Indica se il biglietto è stato anche acquistato, oltre che prenotato.
\end{itemize}
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Sottoscrive}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'acquisto di un abbonamento da parte di un cliente.
\item \textbf{Entità coinvolte:} Cliente, Abbonamento.
\end{itemize}
\end{itemize}

\pagebreak

\begin{itemize}
\item \textbf{Inserisce}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'inserimento di un commento dell'utente nella sezione dedicata nel sito.
\item \textbf{Entità coinvolte:} Cliente, Messaggio.
\end{itemize}
\end{itemize}

\begin{itemize}
\item \textbf{Commenta}
\begin{itemize}
\item \textbf{Descrizione:} Indica l'evento cui un messaggio di commento si riferisce.
\item \textbf{Entità coinvolte:} Messaggio, Evento.
\end{itemize}
\end{itemize}


\section{Vincoli esterni}
\label{parVincoliEsterni}

In questo paragrafo si enunciano i vincoli esterni che devono essere rispettati; una trattazione più approfondita della loro realizzazione per mezzo di trigger sarà esposta in una sezione dedicata.

\begin{itemize}
\item Non possono esserci due biglietti che riguardano la stessa seduta per lo stesso spettacolo.
\item Si possono effettuare al massimo 5 prenotazioni di biglietti non pagati per spettacolo e per cliente; i biglietti acquistati invece sono illimitati.
\item La somma delle durate di proiezione degli eventi non può essere inferiore alla durata dell'evento.
\item Un abbonamento è valido per un numero limitato di ingressi.
\item Non si possono sovrapporre più spettacoli nella stessa sala.
\item Deve esistere un noleggio che copra una proiezione.
\item Un palinsesto non si può estendere oltre la data di fine di un noleggio.
\item Non si possono ammettere biglietti di tipologia 3D per uno spettacolo non in 3D (e viceversa).
\item Un abbonamento non può essere impiegato per spettacoli 3D.
\item Non si possono effettuare modifiche ad uno spettacolo per il quale sono già stati emessi dei biglietti.
%\item Un biglietto può essere pagato solo da un utente verificato, ossia un utente che si è già recato presso una cassa ed ha esibito un documento e la carta di credito.
\end{itemize}
